import axios from 'axios'
// import qs from 'qs'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import router from '@/router'
import { getCookie, setCookie, removeCookie } from '@/utils/auth'
import utils from "@/utils/utils";
// 创建axios实例
// 创建axios实例
// console.log(process.env.VUE_APP_BASE_API)
// console.log(JSON.stringify(Vue.prototype.$api))
const service = axios.create({
  baseURL: "/api/", // url = base url + request url
  // baseURL: process.env.NODE_ENV === 'production' ? 'https://video.skyzhou.cn/api/' : "https://video.skyzhou.cn/api/",
  // withCredentials: true, //跨域请求时发送cookies
  // BASE_URL: '/api',
  // headers: {
  //    'Content-Type': 'application/json; charset=utf-8'
  // },
  timeout: 3600000 // request timeout
})
// 请求拦截器
service.interceptors.request.use(
  config => {
    config.headers['token'] = localStorage.getItem("authorization") || '';
    return config
  },
  error => {
    // 处理请求错误
    // console.log('请求发送失败')
    return Promise.reject(error)
  }
)
// request拦截器
// service.interceptors.request.use(config => {
//   config.baseURL= 'http://jupevs79.dongtaiyuming.net'
//   const headers = config.headers || {}
//   if (headers['Content-Type'] == 'application/x-www-form-urlencoded' && config.data) {
//     // config.data = qs.stringify(config.data);
//   }
//   // localStorage.setItem("authorization", res.data.authorization);
//   // 是否新token
//   // getCookie('token') ? setCookie('token', (getCookie('token') || '')): '';
//   // config.headers['Authorization'] = localStorage.getItem("authorization")? '' : localStorage.getItem("authorization");
//   // xhrFields:{ withCredentials:true },
//   // config.headers['withCredentials'] = 'true'
//   // config.headers['Authorization'] ='123';
//   // config.headers['tid'] = window.auth_tid || '';
//   // config.headers['clienttype'] = 'mall-merchant-web';
//   // config.headers['version'] = '1.0.0';
//   // config.headers['lat'] = '';
//   // config.headers['lng'] = '';
//   // config.headers['clientid'] = '';
//   // tid: 租户ID
//   // clienttype:客户端类型, 取值：
//     // staff-ios(员工端超级app的ios版),
//     // staff-android(员工端超级app的android版),
//     // member-wxapp(微信业主端微信小程序),
//     // idm-web(idm管理端),
//     // mall-admin-web(商城管理端),
//     // mall-merchant-web(商户/店铺管理端)
//   // version:版本号，如:1.0.0(web端固定都是9.9.9）
//   // lat: 纬度
//   // lng: 经度
//   // clientid: 设备ID(web端设备id生成方式参考 FingerprintJS )

//   // get请求映射params参数
//   if (config.method === 'get' && config.params) {
//     let url = config.url + '?';
//     for (const propName of Object.keys(config.params)) {
//       const value = config.params[propName];
//       var part = encodeURIComponent(propName) + "=";
//       if (value !== null && typeof(value) !== "undefined") {
//         if (typeof value === 'object') {
//           for (const key of Object.keys(value)) {
//             if (value[key] !== null && typeof (value[key]) !== 'undefined') {
//               let params = propName + '[' + key + ']';
//               let subPart = encodeURIComponent(params) + '=';
//               url += subPart + encodeURIComponent(value[key]) + '&';
//             }
//           }
//         } else {
//           url += part + encodeURIComponent(value) + "&";
//         }
//       }
//     }
//     url = url.slice(0, -1);
//     config.params = {};
//     config.url = url;
//   }
//   return config
// }, error => {
//     console.log('request', error)
//     Promise.reject(error)
// })

// 响应拦截器
service.interceptors.response.use(res => {
  // let config = res.config || {};
  const code = res.data.code || ''; // 默认成功状态
  let errorMsg = res.data.msg || res.data.message || res.data.error || '';
  // let url = config.url;//获取接口名称 做处理 用于导出功能
  // console.log(res)
  // console.log(code)
  // if ([
  //   '/index/getCode',
  //   '/student/download',
  //   '/bOtherEmployee/download',
  //   '/bWarningDetailed/downloadParam'
  // ].find(i => {
  //   return url.includes(i)
  // })){
  //   return res
  // }

  // console.log(code)
  if (code == 0) { // token
    return res.data
  } else if (code == 20005) {
    Message({
      // message: "(" + code + ")" + errorMsg,
      message: errorMsg || code,
      type: 'error'
    });
    router.push("./login");
    // utils.open_login(null, 'alert', errorMsg);
    // store.dispatch("user/logout").then((res) => {
    // 	console.log("退出成功");
    // 	router.push("./login");
    // })
    return Promise.reject(res.data) // 无效的会话，或者登录状态已过期，请重新登录。
  } else {
    Message({
      // message: "(" + code + ")" + errorMsg,
      message: errorMsg || code,
      type: 'error'
    });
    return res.data // error
  }
  //  return res.data
},
  error => {
    console.log("++++")
    let { message } = error;
    console.log(message)
    if (message == "No message available") {
      message = "网络连接异常";
    } else if (message.includes("timeout")) {
      message = "接口请求超时";
    } else if (message.includes("404") || message.includes("GET") || message.includes("application/x-www-form-urlencoded")) {
      // message = "接口" + message.substr(message.length - 3) + "异常";
      message = "接口异常: " + message;
    } else if (message.includes("Request failed with status code")) {
      // message = "接口" + message.substr(message.length - 3) + "异常";
      // message = "接口异常: " + message;
      message = "请登陆";
      store.dispatch("user/logout").then((res) => {
        console.log("退出成功");
        router.push("./login");
      })
    } else {
      message = "接口请求Error"
    }

    console.log('HTTP: Error', error, JSON.parse(JSON.stringify(error)));
    // try {
    //   // 1. 请求所得到的响应的状态码超出了 2xx
    //   // 2. 请求完全得不到响应.
    //   if (error.request || message == "Network Error") {
    //     message = "网络连接异常";
    //   } else if (error.response || message.includes("timeout")) {
    //     message = "接口请求超时";
    //   } else {
    //     message = "接口请求Error";
    //   }
    // } catch (e) {}
    // message = error.message || message;

    Message({
      message: message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service
